#pragma once


#include "trace/Ray.hpp"


class HitResult
{
public:
    HitResult(double rayParameter, const Point &point, const Vector &normal)
        : _rayParameter(rayParameter), _point(point), _normal(normal) {}

    double rayParameter() const { return _rayParameter; }

    const Point &point() const { return _point; }

    const Vector &normal() const { return _normal; }

private:
    double  _rayParameter;      // length from ray origin
    Point   _point;             // hit point
    Vector  _normal;            // normal of surface at hit point
};
